#include <bits/stdc++.h>

using namespace std;

// 栈底元素移除掉，上面的元素盖下来
// 返回移除掉的栈底元素
int bottomOut(stack<int>& st)
{
    int ans = st.top();
    st.pop();
    if(st.empty()) 
        return ans;
    else
    {
        int last = bottomOut(st);
        st.push(ans);
        return last;
    }
}

// 用递归函数逆序栈
void reverse(stack<int>& st)
{
    if(st.empty()) return;
    int num = bottomOut(st);
    reverse(st);
    st.push(num);
}

int main()
{
    stack<int> st{{1, 2, 3, 4, 5}};
    reverse(st);
    while(!st.empty())
    {
        cout << st.top() << endl;
        st.pop();
    }
    return 0;
}